package com.example.tpintegrador.messaging;

import java.util.ArrayList;

import com.example.tpintegrador.R;
import com.example.tpintegrador.data.ContactDataBaseHelper;
import com.example.tpintegrador.entities.Conexion;

import android.app.AlertDialog;
import android.app.Dialog;
import android.app.ListActivity;
import android.database.Cursor;
import android.os.Bundle;
import android.view.LayoutInflater;
import android.view.View;
import android.view.ViewGroup;
import android.widget.AdapterView;
import android.widget.BaseAdapter;
import android.widget.TextView;

public class Conexiones extends ListActivity {
	private ConexionAdapter adapter;
	private static final int DIALOG_INFO = 0;

	private String mensajeDialogo;

	@Override
	public void onCreate(Bundle savedInstanceState) {
		super.onCreate(savedInstanceState);
		setContentView(R.layout.conexiones);
		adapter = new ConexionAdapter();
		setListAdapter(adapter);
		loadConexion();

	}

	private void loadConexion() {
		Conexion con = new Conexion();
		Cursor cursor = null;
		try {
			ContactDataBaseHelper database = new ContactDataBaseHelper(this);
			cursor = database.getAllConexiones();
		} catch (Exception ex) {
			mensajeDialogo = ex.toString();
			showDialog(DIALOG_INFO);
		}
		if (cursor != null) {
			if (cursor.moveToFirst()) {
				int fechaConexion = cursor
						.getColumnIndex(ContactDataBaseHelper.colConFecha);
				int estadoConexion = cursor
						.getColumnIndex(ContactDataBaseHelper.colConEst);
				int tipoConexion = cursor
						.getColumnIndex(ContactDataBaseHelper.colConType);

				do {

					con = new Conexion();
					con.setFecha(cursor.getString(fechaConexion));
					con.setEstado(cursor.getString(estadoConexion));
					con.setTipo(cursor.getString(tipoConexion));
					adapter.addConexion(con);
				} while (cursor.moveToNext());
				cursor.close();
			}
			adapter.notifyDataSetChanged();
		}

	}

	class ConexionAdapter extends BaseAdapter {
		private ArrayList<Conexion> ConexionInfos;
		private LayoutInflater inflater;

		public ConexionAdapter() {
			ConexionInfos = new ArrayList<Conexion>();
			inflater = LayoutInflater.from(Conexiones.this);
		}

		public void addConexion(Conexion info) {
			if (info != null) {
				ConexionInfos.add(info);
			}
		}

		public void removeConexion(Conexion info) {
			if (info != null) {
				ConexionInfos.remove(info);
			}
		}

		@Override
		public int getCount() {
			return ConexionInfos.size();
		}

		@Override
		public Object getItem(int position) {
			return ConexionInfos.get(position);
		}

		@Override
		public long getItemId(int position) {
			return position;
		}

		class Holder {
			private TextView txtFecha;
			private TextView txtEstado;
			private TextView txtTipo;
		}

		@Override
		public View getView(int position, View convertView, ViewGroup arg2) {
			Holder holder;
			if (convertView == null) {
				convertView = inflater.inflate(R.layout.conexion, null);
				holder = new Holder();

				holder.txtFecha = (TextView) convertView
						.findViewById(R.id.txtFechacon);
				holder.txtEstado = (TextView) convertView
						.findViewById(R.id.txtEstado);
				holder.txtTipo = (TextView) convertView
						.findViewById(R.id.txtType);
				convertView.setTag(holder);
			} else {
				holder = (Holder) convertView.getTag();
			}

			Conexion info = (Conexion) getItem(position);
			holder.txtFecha.setText(info.getFecha());
			holder.txtEstado.setText(" " + info.getEstado());
			holder.txtTipo.setText(" " + info.getTipo());
			return convertView;
		}

	}

	public void onItemClick(AdapterView<?> arg0, View arg1, int position,
			long arg3) {

	}

	private Dialog createInfoDialog() {
		Dialog dialog = new AlertDialog.Builder(this).setIcon(R.drawable.alerta_verde)
				.setTitle("Error").setPositiveButton("OK", null)
				.setMessage(mensajeDialogo).create();
		return dialog;
	}

	@Override
	protected Dialog onCreateDialog(int id) {
		Dialog dialog = null;
		if (id == DIALOG_INFO) {
			dialog = createInfoDialog();
		} else {
			dialog = super.onCreateDialog(id);
		}
		return dialog;
	}

	@Override
	protected void onPrepareDialog(int id, Dialog dialog) {
		if (id == DIALOG_INFO) {
			((AlertDialog) dialog).setMessage(mensajeDialogo);
		}
	}
}
